package org.giovanolli.mumi.entities;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 * The Class AttentionTime.
 */
@Entity
@Table(name = "attention_time")
public class AttentionTime extends IdentificableEntity {

	/** The Constant serialVersionUID. */
	private static final long serialVersionUID = 4075803893553348077L;

	/** The time and date. */
	@Column(name = "date")
	private Date date;

	/** The order. */
	@Column(name = "attention_order")
	private Integer attentionOrder;

	// /** The assigned specialist. */
	// @ManyToOne
	// @JoinColumn(name = "specialist_id")
	// private Specialist specialist;

	/** The patient. */
	@ManyToOne
	@JoinColumn(name = "patient_id")
	private Patient patient;

	// /** The attention type. */
	// @ManyToOne
	// @JoinColumn(name = "attention_type_id")
	// private AttentionType attentionType;
	//
	// /** The fee. */
	// @Column(name = "fee")
	// private Double fee;

	/** The attention time status. */
	@Enumerated(EnumType.STRING)
	@Column(name = "attention_time_status")
	private AttentionTimeStatus attentionTimeStatus;

	/** The specialist fee. */
	@ManyToOne
	@JoinColumn(name = "specialist_fee")
	private SpecialistFee specialistFee;

	// /** The bill detail. */
	// @OneToOne
	// private BillDetail billDetail;

	// /**
	// * Gets the bill detail.
	// *
	// * @return the bill detail
	// */
	// public BillDetail getBillDetail() {
	// return billDetail;
	// }
	//
	// /**
	// * Sets the bill detail.
	// *
	// * @param billDetail
	// * the new bill detail
	// */
	// public void setBillDetail(BillDetail billDetail) {
	// this.billDetail = billDetail;
	// }

	/**
	 * Gets the attention order.
	 * 
	 * @return the attention order
	 */
	public Integer getAttentionOrder() {
		return attentionOrder;
	}

	/**
	 * Gets the attention time status.
	 * 
	 * @return the attention time status
	 */
	public AttentionTimeStatus getAttentionTimeStatus() {
		return attentionTimeStatus;
	}

	// /**
	// * Gets the attention type.
	// *
	// * @return the attention type
	// */
	// public AttentionType getAttentionType() {
	// return attentionType;
	// }
	//
	// /**
	// * Sets the attention type.
	// *
	// * @param attentionType
	// * the new attention type
	// */
	// public void setAttentionType(AttentionType attentionType) {
	// this.attentionType = attentionType;
	// }

	// /**
	// * Gets the fee.
	// *
	// * @return the fee
	// */
	// public Double getFee() {
	// return fee;
	// }
	//
	// /**
	// * Sets the fee.
	// *
	// * @param fee
	// * the new fee
	// */
	// public void setFee(Double fee) {
	// this.fee = fee;
	// }

	/**
	 * Gets the time and date.
	 * 
	 * @return the time and date
	 */
	public Date getDate() {
		return date;
	}

	/**
	 * Gets the patient.
	 * 
	 * @return the patient
	 */
	public Patient getPatient() {
		return patient;
	}

	/**
	 * Gets the specialist fee.
	 * 
	 * @return the specialist fee
	 */
	public SpecialistFee getSpecialistFee() {
		return specialistFee;
	}

	/**
	 * Sets the attention order.
	 * 
	 * @param attentionOrder
	 *            the new attention order
	 */
	public void setAttentionOrder(Integer attentionOrder) {
		this.attentionOrder = attentionOrder;
	}

	// /**
	// * Gets the assigned specialist.
	// *
	// * @return the assigned specialist
	// */
	// public Specialist getAssignedSpecialist() {
	// return specialist;
	// }
	//
	// /**
	// * Sets the assigned specialist.
	// *
	// * @param assignedSpecialist
	// * the new assigned specialist
	// */
	// public void setAssignedSpecialist(Specialist assignedSpecialist) {
	// this.specialist = assignedSpecialist;
	// }
	//
	// /**
	// * Gets the specialist.
	// *
	// * @return the specialist
	// */
	// public Specialist getSpecialist() {
	// return specialist;
	// }
	//
	// /**
	// * Sets the specialist.
	// *
	// * @param specialist
	// * the new specialist
	// */
	// public void setSpecialist(Specialist specialist) {
	// this.specialist = specialist;
	// }

	/**
	 * Sets the attention time status.
	 * 
	 * @param attentionTimeStatus
	 *            the new attention time status
	 */
	public void setAttentionTimeStatus(AttentionTimeStatus attentionTimeStatus) {
		this.attentionTimeStatus = attentionTimeStatus;
	}

	/**
	 * Sets the time and date.
	 * 
	 * @param timeAndDate
	 *            the new time and date
	 */
	public void setDate(Date timeAndDate) {
		this.date = timeAndDate;
	}

	/**
	 * Sets the patient.
	 * 
	 * @param patient
	 *            the new patient
	 */
	public void setPatient(Patient patient) {
		this.patient = patient;
	}

	/**
	 * Sets the specialist fee.
	 * 
	 * @param specialistFee
	 *            the new specialist fee
	 */
	public void setSpecialistFee(SpecialistFee specialistFee) {
		this.specialistFee = specialistFee;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see org.osoftware.mumi.dao.model.BaseObject#toString()
	 */
	@Override
	public String toString() {
		return "AttentionTime [" + ", date=" + date + ", order=" + attentionOrder + /*
																					 * ", assignedSpecialist=" + specialist + *
																					 */", toString()=" + super.toString() + "]";
	}

}
